package com.cardone.platform.authority.service;

import java.util.List;
import java.util.Map;

import com.cardone.common.cache.support.CacheEvictSupport;
import com.cardone.common.dto.PaginationDto;
import com.cardone.platform.authority.dto.PeVaRuTransactModeDto;
import com.cardone.platform.authority.dto.PermissionDto;

/**
 * 许可服务
 * 
 * @author yaoht
 */
public interface PermissionService extends CacheEvictSupport {
	/**
	 * spring bean id
	 */
	String BEAN_ID = "com.cardone.platform.authority.service.PermissionService";

	/**
	 * 保存:许可
	 * 
	 * @param savePermission
	 *            许可对象
	 * 
	 * @return 许可对象
	 */
	PermissionDto savePermissionByIdOrCode(PermissionDto savePermission);

	/**
	 * 保存:许可
	 * 
	 * @param savePermission
	 *            许可对象
	 * 
	 * @return 许可对象
	 */
	PermissionDto savePermissionByName(PermissionDto savePermission);

	/**
	 * 删除:许可
	 * 
	 * @param deletePermission
	 *            许可对象
	 * 
	 * @return 影响行数
	 */
	int deletePermissionByCode(PermissionDto deletePermission);

	/**
	 * 删除:许可
	 * 
	 * @param deletePermission
	 *            许可对象
	 * 
	 * @return 影响行数
	 */
	int deletePermissionByIds(PermissionDto deletePermission);

	/**
	 * 设置:许可
	 * 
	 * @param updatePermission
	 *            许可对象
	 * 
	 * @return 影响行数
	 */
	int updatePermissionByCode(PermissionDto updatePermission);

	/**
	 * 设置:许可
	 * 
	 * @param updatePermission
	 *            许可对象
	 * 
	 * @return 影响行数
	 */
	int updatePermissionByIds(PermissionDto updatePermission);

	/**
	 * 读取:许可
	 * 
	 * @param readPermission
	 *            许可对象
	 * 
	 * @return 许可对象
	 */
	Integer readPermissionByCodeNqId(PermissionDto readPermission);

	/**
	 * 读取:许可
	 * 
	 * @param readPermission
	 *            许可对象
	 * 
	 * @return 许可对象
	 */
	Integer readPermissionByName(PermissionDto readPermission);

	/**
	 * 查询:许可
	 * 
	 * @param findPermission
	 *            许可对象
	 * 
	 * @return 许可对象
	 */
	PermissionDto findPermissionByCode(PermissionDto findPermission);

	/**
	 * 查询:许可
	 * 
	 * @param findPermission
	 *            许可对象
	 * 
	 * @return 许可对象
	 */
	PermissionDto findPermissionById(PermissionDto findPermission);

	/**
	 * 查询:许可
	 * 
	 * @param findListPermission
	 *            许可对象
	 * 
	 * @return 许可对象集合
	 */
	List<PermissionDto> findListPermissionByCode(PermissionDto findListPermission);

	/**
	 * 查询:许可
	 * 
	 * @param findListPermission
	 *            许可对象
	 * 
	 * @return 许可对象集合
	 */
	List<PermissionDto> findListPermissionByName(PermissionDto findListPermission);

	/**
	 * 分页:许可
	 * 
	 * @param paginationPermission
	 *            许可对象
	 * 
	 * @return 许可分页对象
	 */
	PaginationDto<PermissionDto> paginationPermissionByCode(PermissionDto paginationPermission);

	/**
	 * 分页:许可
	 * 
	 * @param paginationPermission
	 *            许可对象
	 * 
	 * @return 许可分页对象
	 */
	PaginationDto<Map<String, Object>> paginationPermissionByName(PermissionDto paginationPermission);

	/**
	 * 保存:许可、验证规则与处理模式
	 * 
	 * @param savePeVaRuTransactMode
	 *            许可、验证规则与处理模式对象
	 * 
	 * @return 许可、验证规则与处理模式对象
	 */
	PeVaRuTransactModeDto savePeVaRuTransactModeByIdOrCode(PeVaRuTransactModeDto savePeVaRuTransactMode);

	/**
	 * 保存:许可、验证规则与处理模式
	 * 
	 * @param savePeVaRuTransactMode
	 *            许可、验证规则与处理模式对象
	 * 
	 * @return 许可、验证规则与处理模式对象
	 */
	PeVaRuTransactModeDto savePeVaRuTransactModeByName(PeVaRuTransactModeDto savePeVaRuTransactMode);

	/**
	 * 删除:许可、验证规则与处理模式
	 * 
	 * @param deletePeVaRuTransactMode
	 *            许可、验证规则与处理模式对象
	 * 
	 * @return 影响行数
	 */
	int deletePeVaRuTransactModeByCode(PeVaRuTransactModeDto deletePeVaRuTransactMode);

	/**
	 * 删除:许可、验证规则与处理模式
	 * 
	 * @param deletePeVaRuTransactMode
	 *            许可、验证规则与处理模式对象
	 * 
	 * @return 影响行数
	 */
	int deletePeVaRuTransactModeByIds(PeVaRuTransactModeDto deletePeVaRuTransactMode);

	/**
	 * 设置:许可、验证规则与处理模式
	 * 
	 * @param updatePeVaRuTransactMode
	 *            许可、验证规则与处理模式对象
	 * 
	 * @return 影响行数
	 */
	int updatePeVaRuTransactModeByCode(PeVaRuTransactModeDto updatePeVaRuTransactMode);

	/**
	 * 设置:许可、验证规则与处理模式
	 * 
	 * @param updatePeVaRuTransactMode
	 *            许可、验证规则与处理模式对象
	 * 
	 * @return 影响行数
	 */
	int updatePeVaRuTransactModeByIds(PeVaRuTransactModeDto updatePeVaRuTransactMode);

	/**
	 * 读取:许可、验证规则与处理模式
	 * 
	 * @param readPeVaRuTransactMode
	 *            许可、验证规则与处理模式对象
	 * 
	 * @return 许可、验证规则与处理模式对象
	 */
	Integer readPeVaRuTransactModeByCodeNqId(PeVaRuTransactModeDto readPeVaRuTransactMode);

	/**
	 * 读取:许可、验证规则与处理模式
	 * 
	 * @param readPeVaRuTransactMode
	 *            许可、验证规则与处理模式对象
	 * 
	 * @return 许可、验证规则与处理模式对象
	 */
	Integer readPeVaRuTransactModeByName(PeVaRuTransactModeDto readPeVaRuTransactMode);

	/**
	 * 查询:许可、验证规则与处理模式
	 * 
	 * @param findPeVaRuTransactMode
	 *            许可、验证规则与处理模式对象
	 * 
	 * @return 许可、验证规则与处理模式对象
	 */
	PeVaRuTransactModeDto findPeVaRuTransactModeByCode(PeVaRuTransactModeDto findPeVaRuTransactMode);

	/**
	 * 查询:许可、验证规则与处理模式
	 * 
	 * @param findPeVaRuTransactMode
	 *            许可、验证规则与处理模式对象
	 * 
	 * @return 许可、验证规则与处理模式对象
	 */
	PeVaRuTransactModeDto findPeVaRuTransactModeById(PeVaRuTransactModeDto findPeVaRuTransactMode);

	/**
	 * 查询:许可、验证规则与处理模式
	 * 
	 * @param findListPeVaRuTransactMode
	 *            许可、验证规则与处理模式对象
	 * 
	 * @return 许可、验证规则与处理模式对象集合
	 */
	List<PeVaRuTransactModeDto> findListPeVaRuTransactModeByCode(PeVaRuTransactModeDto findListPeVaRuTransactMode);

	/**
	 * 查询:许可、验证规则与处理模式
	 * 
	 * @param findListPeVaRuTransactMode
	 *            许可、验证规则与处理模式对象
	 * 
	 * @return 许可、验证规则与处理模式对象集合
	 */
	List<PeVaRuTransactModeDto> findListPeVaRuTransactModeByName(PeVaRuTransactModeDto findListPeVaRuTransactMode);

	/**
	 * 分页:许可、验证规则与处理模式
	 * 
	 * @param paginationPeVaRuTransactMode
	 *            许可、验证规则与处理模式对象
	 * 
	 * @return 许可、验证规则与处理模式分页对象
	 */
	PaginationDto<PeVaRuTransactModeDto> paginationPeVaRuTransactModeByCode(PeVaRuTransactModeDto paginationPeVaRuTransactMode);

	/**
	 * 分页:许可、验证规则与处理模式
	 * 
	 * @param paginationPeVaRuTransactMode
	 *            许可、验证规则与处理模式对象
	 * 
	 * @return 许可、验证规则与处理模式分页对象
	 */
	PaginationDto<Map<String, Object>> paginationPeVaRuTransactModeByName(PeVaRuTransactModeDto paginationPeVaRuTransactMode);
}